﻿using System;
using Scommesse.Filters;
using Scommesse.Model;
using Scommesse.View.Admin;

namespace Scommesse.Presenters.Admin
{
    class EliminaCategoriaPresenter : IEliminaPresenter
    {
        protected readonly EliminaDialog EliminaDialog;
        protected readonly Palinsesto Palinsesto;

        protected String NomeCategoria = String.Empty;
        protected String NomeCompetizione = String.Empty;
        protected String NomeEvento = String.Empty;

        public EliminaCategoriaPresenter(EliminaDialog dialog)
        {
            EliminaDialog = dialog;
            EliminaDialog.AddListener(this);
            Palinsesto = Palinsesto.GetPalinsesto();
            EliminaDialog.ShowDialog();
        }

        public virtual void ClearView()
        {
            EliminaDialog.EventoComboBox = false;
            EliminaDialog.EventoLabel = false;
            EliminaDialog.CompComboBox = false;
            EliminaDialog.CompLabel = false;

            foreach (Categoria cat in Palinsesto.Categorie)
                EliminaDialog.AddCategoria = cat.Nome;
        }

        public virtual void ConfermaElimina()
        {
            try
            {
                NomeCategoria = EliminaDialog.NomeCategoria;
                if (!EliminaDialog.CompComboBox && !EliminaDialog.EventoComboBox)
                {
                    Palinsesto.RemoveCategoria(NomeCategoria);
                    EliminaDialog.Close();
                }
            }
            catch
            {
                EliminaDialog.CategoriaError = "Seleziona una categoria";
            }
        }

        #region Load Members

        public void LoadCompetizioni()
        {
            EliminaDialog.NomeCompetizione = "";
            EliminaDialog.NomeEvento = "";

            String nomeCategoria = EliminaDialog.NomeCategoria;
            ICategoria cat = Palinsesto.GetCategoriaByName(nomeCategoria);

            foreach (Competizione comp in cat.Competizioni)
                EliminaDialog.AddCompetizione = comp.Nome;
        }

        public void LoadEventi()
        {
            EliminaDialog.NomeEvento = "";

            String nomeCompetizione = EliminaDialog.NomeCompetizione;
            String nomeCategoria = EliminaDialog.NomeCategoria;

            var comp = Palinsesto.GetCategoriaByName(nomeCategoria).GetCompetizioneByName(nomeCompetizione);
            if (comp != null)
                foreach (IEvento ev in FiltroPalinsesto.GetAllEventiByState(comp.Eventi, StatoEvento.Scommettibile))
                    EliminaDialog.AddEvento = ev.CompetitoreA + " - " + ev.CompetitoreB + " " +
                                          String.Format("{0:dd/MM/yyyy HH:mm}", ev.DataOra);
        }

        #endregion
    }
}
